4 research outputs found

    Automated Fault Localization in Large Java Applications

    Get PDF
    Modern software systems evolve steadily. Software developers change the software codebase every day to add new features, to improve the performance, or to fix bugs. Despite extensive testing and code inspection processes before releasing a new software version, the chance of introducing new bugs is still high. A code that worked yesterday may not work today, or it can show a degraded performance causing software regression. The laws of software evolution state that the complexity increases as software evolves. Such increasing complexity makes software maintenance harder and more costly. In a typical software organization, the cost of debugging, testing, and verification can easily range from 50% to 75% of the total development costs. Given that human resources are the main cost factor in the software maintenance and the software codebase evolves continuously, this dissertation tries to answer the following question: How can we help developers to localize the software defects more effectively during software development? We answer this question in three aspects. First, we propose an approach to localize failure-inducing changes for crashing bugs. Assume the source code of a buggy version, a failing test, the stack trace of the crashing site, and a previous correct version of the application. We leverage program analysis to contrast the behavior of the two software versions under the failing test. The difference set is the code statements which contribute to the failure site with a high probability. Second, we extend the version comparison technique to detect the leak-inducing defects caused by software changes. Assume two versions of a software codebase (one previous non-leaky and the current leaky version) and the existing test suite of the application. First, we compare the memory footprint of the code locations between two versions. Then, we use a confidence score to rank the suspicious code statements, i.e., those statements which can be the potential root causes of memory leaks. The higher the score, the more likely the code statement is a potential leak. Third, our observation on the related work about debugging and fault localization reveals that there is no empirical study which characterizes the properties of the leak- inducing defects and their repairs. Understanding the characteristics of the real defects caused by resource and memory leaks can help both researchers and practitioners to improve the current techniques for leak detection and repair. To fill this gap, we conduct an empirical study on 491 reported resource and memory leak defects from 15 large Java applications. We use our findings to draw implications for leak avoidance, detection, localization, and repair

    Memory and resource leak defects and their repairs in Java projects

    Get PDF
    Despite huge software engineering efforts and programming language support, resource and memory leaks are still a troublesome issue, even in memory-managed languages such as Java. Understanding the properties of leak-inducing defects, how the leaks manifest, and how they are repaired is an essential prerequisite for designing better approaches for avoidance, diagnosis, and repair of leak-related bugs. We conduct a detailed empirical study on 491 issues from 15 large open-source Java projects. The study proposes taxonomies for the leak types, for the defects causing them, and for the repair actions. We investigate, under several aspects, the distributions within each taxonomy and the relationships between them. We find that manual code inspection and manual runtime detection are still the main methods for leak detection. We find that most of the errors manifest on error-free execution paths, and developers repair the leak defects in a shorter time than non-leak defects. We also identify 13 recurring code transformations in the repair patches. Based on our findings, we draw a variety of implications on how developers can avoid, detect, isolate and repair leak-related bugs

    Impact of clinical supervision on field training of nursing students at Urmia University of Medical Sciences

    No full text
    Introduction: Obtaining clinical competency in clinical education is one of the problems in nursing and use of the new methods of clinical training is very important. Clinical supervision is one of the methods used as a mechanism to promote knowledge and skill for promoting professional performance in nursing students. This study is carried out to determine the impact of clinical supervision on field training of nursing students at Urmia University of Medical Sciences. Methods: In the present experimental study, 32 nursing students were enrolled in the study based on census and randomly assigned into two groups of experimental and control by block randomization. Clinical supervision was used in the experimental group and the control group received routine clinical trainings in the field. The students’ clinical skills were assessed using a researcher-made checklist, the validity of which was confirmed through content validity method by 13 faculty members and its reliability was approved by test-retest method on 20 nursing students in the form of a pilot study and through Cronbach’s alpha (87%). Data were analyzed using SPSS, version 14. Results: There was a significant difference between the experimental and control groups in clinical skills such as recognition and administration of medication, team participation, patients and their relatives’ education, considering the safety, infection prevention and nursing process (p<0.005). Conclusion: The study demonstrated that in clinical supervision process, students have a better communication and cooperation with their instructor and with each other and their confidence and understanding and the amount of learning in practical skills was enhanced more than routine clinical training. The implementation of this clinical training method for students of nursing and other fields of medical sciences is recommendable
    corecore